// Author: Domien Nowicki

#ifndef MOVE_H
#define MOVE_H

#include "Map.h"
#include "Land.h"
#include "Province.h"
#include "Color.h"

// Class representing which province to color
class Move
{
public:

	// Constructors
	Move();
	Move(Map* newMap, const std::string& newLand, const std::string& newProvince, Color newColor);
	Move(const Move& rhs);

	// Destructor
	virtual ~Move();

	// Operations on getting/setting the move properties
	Color GetColor() const;
	Map* GetMap() const;
	const std::string& GetLand() const;
	const std::string& GetProvince() const;

	void SetColor(Color newColor);
	void SetMap(Map *newMap);
	void SetLand(const std::string& newLand);
	void SetProvince(const std::string& newProvince);

	// Return a textual representation of this move
	std::string ToString() const;

	Move& operator=(const Move& rhs);

protected:
	

private:
	Color color;
	Map *map;
	std::string land;
	std::string province;
};

#endif //MOVE_H